关于linux:AWK比较两个单独文件中的两列

您所在的位置:网站首页 awk 比较大小 关于linux:AWK比较两个单独文件中的两列

关于linux:AWK比较两个单独文件中的两列

2023-04-28 12:52| 来源: 网络整理| 查看: 265

我想比较两个文件并执行以下操作:如果第一个文件中的第5列等于第二个文件中的第5列,我想从第一个文件中打印整行。 那可能吗? 我搜索了问题,但找不到解决方案:(

这些文件由制表符分隔,我尝试了如下操作:

1zcat file1.txt.gz file2.txt.gz | awk -F'\t' 'NR==FNR{a[$5];next}$5 in a {print $0}'

是否有人尝试做类似的事情? :)

在此先感谢您的帮助!

相关讨论 请提供一个最小的可复制示例! 这些字段必须在同一行吗? 您能否给出输入文件和期望输出的简短示例? 使用zcat不可能将file1与file2分开-您只有一行流,并且NR==FNR始终为true。

您的脚本很好,但是您需要将每个文件分别以相反的顺序提供给awk。

12345678910111213$ cat file1.txt a b c d 100 x y z w 200 p q r s 300 1 2 3 4 400 $ cat file2.txt . . . . 200 . . . . 400 $ awk 'NR==FNR{a[$5];next} $5 in a {print $0}' file2.txt file1.txt x y z w 200 1 2 3 4 400

编辑:

正如评论中指出的那样,可以改进上述通用解决方案,并针对OP从压缩的制表符分隔文件开始的情况进行定制:

123$ awk -F'\t' 'NR==FNR{a[$5];next} $5 in a'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3